;p14.asm
;编程，在屏幕中间显示当前的月份。
assume cs:code
code segment 
    start:	
        mov al,8 ;从CMOS RAM的8号单元读出当前月份的BCD码。
        out 70h,al 
        in al, 71h ;从数据端口71h中取得指定单元中的数据,注意是一个字节的数据
        
        mov ah, al ;al中为从CMOS RAM的8号单元中读出的数据
        mov cl, 4
        shr ah, cl ;右移四位空出四位,ah中为月份的十位数码值
        and al, 00001111b ;al中为月份的个位数码值
        
        add ah, 30h ;BCD码值+30h=十进制数对应的ASCII
        add al, 30h 
        
        mov bx, 0b800h 
        mov es, bx 
        mov bl, 02h ;文字属性
        mov byte ptr es:[160*12+40*2], ah ;显示月份的十位数码
        mov byte ptr es:[160*12+40*2+1], bl 
        mov byte ptr es:[160*12+40*2+2], al ;接着显示月份的个位数码
        mov byte ptr es:[160*12+40*2+3], bl 
        
        mov ax,4c00h
        int 21h
code ends
end start